Hypothesis Testing

Author

Samuel Merk

1 Überblick 🔭

Mein Plan ist heute die verschiedenen Formen des Testens jeweils einmal vorzuturnen und einmal euch als Aufgabe zu geben. Datengrundlage sollen die Daten von Bürgler et al (2023) sein.

2 From Data to p-value/BF 🧭

Bisher haben wir Effektstärken behandelt und das konzeptionelle Verständnis von p-Werten, Bayes Faktoren, Konfidenzintervallen und Highest Posterior Density Intervals geübt. Je nach Hypothese, Design und Daten werden zur Ermittlung dieser Inferenzstatistiken ganz unterschiedliche Verfahren genutzt (z.B. t-Tests, ANOVAs, etc.). Wie diese Verfahren von den Daten zu diesen Inferenzstatistiken kommen haben wir bisher ausgeblendet und wird auch zunächst zu komplex für die meisten von uns sein. Wichtig ist jedoch dennoch zu lernen a) wie man für seine Daten/Hypothesen geeignete Verfahren auswählt und wie man die Voraussetzungen der Verfahren überblicken und prüfen kann. Hier gibt es typischerweise zweierlei Herangehensweisen: Einerseits lehrt/lernt man entlang der historischen Entwicklung die etabliertesten Tests sowie deren Anwendung und Voraussetzungen Schritt für Schritt, um dann nach und nach zu Übersichten wie in folgenden Abbildungen zu kommen:

Mark A Goss-Sampson


Oder man lernt von Anfang an ein vglw. komplexes, dafür aber sehr allgemeines und damit mächtiges Verfahren (Generalized Linear Model, GLM) um dann zu Übersichten wie der folgenden zu gelangen:

Beide Vorgehensweisen sehen typischerweise viele SWS und Forschungspraktika vor, die wir nicht zur Verfügung haben 🤷. Daher gehen wir im Folgenden exemplarisch vor.

3 Gleichheit der Gruppen vor der Intervention ⚖️

Bürgler et al (2023) randomisieren die Teilnehmenden ja auf die drei Gruppen control, imaginary pill und open label placebo. Ziel dieser Randomisierung ist u.a., dass die beiden Gruppen sich vor dem Treatment in den abhängigen Variablen und den (gemessenen wie unbeobachteten) Kovariaten . Das bedeutet also, dass wir uns z.B. Evidenz für die Omnibuspunktnullhypothese \(H_0\text{: }\mu(\text{control}) = \mu(\text{imaginary pill}) = \mu(\text{open label placebo})\). Flow-Chart 6 schlägt uns im Falle für metrische Daten vor (falls best. Voraussetzungen erfüllt sind). Da keine Evidenz für die Nullhypothese liefern können, sollten wir also berechnen.

Im Folgenden wollen wir das für die Variable PAF_t0 machen. Dazu lesen wir zunächst die Daten ein und verschaffen uns einen Überblick über diese.

library(readxl) # für den Datenimport
library(tidyverse) # für Datawrangling

data_buergler_primary <- 
  read_excel("Data_IP_RCT_primary_outcome.xlsx")

glimpse(data_buergler_primary)
Rows: 173
Columns: 27
$ ID                              <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,…
$ group                           <chr> "OLP", "OLP", "OLP", "OLP", "OLP", "OL…
$ PAF_aufgeregtheit_t0            <dbl> 13, 8, 12, 11, 14, 7, 13, 12, 11, 9, 1…
$ PAF_besorgtheit_t0              <dbl> 6, 14, 18, 15, 13, 15, 18, 17, 14, 7, …
$ PAF_interferenz_t0              <dbl> 5, 6, 18, 9, 10, 7, 7, 15, 15, 10, 14,…
$ PAF_zuversichtsmangel_invers_t0 <dbl> 16, 10, 13, 11, 11, 9, 12, 19, 17, 11,…
$ PAF_t0                          <dbl> 40, 38, 61, 46, 48, 38, 50, 63, 57, 37…
$ PAF_aufgeregtheit_t2            <dbl> 11, 11, 11, 15, 13, 9, 14, 12, 9, 10, …
$ PAF_besorgtheit_t2              <dbl> 12, 15, 13, 20, 14, 13, 14, 16, 12, 9,…
$ PAF_interferenz_t2              <dbl> 7, 8, 14, 9, 10, 7, 8, 14, 10, 12, 13,…
$ PAF_zuversichtsmangel_invers_t2 <dbl> 20, 13, 13, 12, 14, 10, 11, 16, 15, 12…
$ PAF_t2                          <dbl> 50, 47, 51, 56, 51, 39, 47, 58, 46, 43…
$ PAF_aufgeregtheit_t3            <dbl> 12, 11, 13, 9, 12, 8, 14, 10, 10, 10, …
$ PAF_besorgtheit_t3              <dbl> 11, 12, 15, 17, 15, 14, 16, 12, 13, 5,…
$ PAF_interferenz_t3              <dbl> 5, 11, 15, 5, 9, 5, 10, 14, 11, 13, 11…
$ PAF_zuversichtsmangel_invers_t3 <dbl> 20, 13, 15, 9, 13, 12, 11, 16, 15, 11,…
$ PAF_t3                          <dbl> 48, 47, 58, 40, 49, 39, 51, 52, 49, 39…
$ PAF_aufgeregtheit_t4            <dbl> 13, 10, 11, 11, 10, 6, 8, 9, 7, 10, 7,…
$ PAF_besorgtheit_t4              <dbl> 10, 15, 12, 16, 14, 13, 16, 14, 14, 7,…
$ PAF_interferenz_t4              <dbl> 5, 10, 16, 6, 6, 5, 11, 13, 9, 13, 6, …
$ PAF_zuversichtsmangel_invers_t4 <dbl> 17, 10, 14, 9, 13, 10, 9, 16, 10, 15, …
$ PAF_t4                          <dbl> 45, 45, 53, 42, 43, 34, 44, 52, 40, 45…
$ PAF_aufgeregtheit_t5            <dbl> 12, 7, 8, 11, 12, 8, 7, 8, 9, 8, 13, 1…
$ PAF_besorgtheit_t5              <dbl> 9, 6, 14, 7, 13, 12, 6, 8, 6, 5, 14, 2…
$ PAF_interferenz_t5              <dbl> 5, 5, 10, 6, 5, 5, 6, 9, 5, 6, 5, 11, …
$ PAF_zuversichtsmangel_invers_t5 <dbl> 19, 12, 13, 7, 12, 11, 7, 14, 10, 15, …
$ PAF_t5                          <dbl> 45, 30, 45, 31, 42, 36, 26, 39, 30, 34…

In obigem Output kann man an <chr> in der Zeile $group erkennen, dass die Variable group noch nicht als nominale Variable kodiert ist. Das machen wir im nächsten Schritt.

data_buergler_primary <- 
  data_buergler_primary |> 
  mutate(group_f = as_factor(group))

Dann können wir den Bayes Faktor berechnen

library(BayesFactor) # für den Bayes Factor
anovaBF(PAF_t0 ~ group_f, data = data_buergler_primary)
Bayes factor analysis
--------------
[1] group_f : 0.4419665 ±0.03%

Against denominator:
  Intercept only 
---
Bayes factor type: BFlinearModel, JZS

Dieser tendiert zwar zur Nullhypothese liefert aber keine überzeugende Evidenz. Eine graphische Übersicht macht das plausibel:

library(ggforce) # für sinaplot
library(ggdist)
Warning: package 'ggdist' was built under R version 4.2.3
data_buergler_primary |> 
  ggplot(aes(group_f, PAF_t0)) + 
  geom_violin() + 
  geom_sina() +
  theme_minimal()

NT und IP Gruppe scheinen sich ähnlicher zu sein. Ein Bayes Faktor für einen Zweigruppenvergeich zwischen diesen Beiden ergibt auch tatsächlich stärkere Evidenz für einen Nulleffekt:

ttestBF(formula = PAF_t0 ~ group_f,
        data = data_buergler_primary |> 
          filter(group != "OLP") |> # OLP aussortieren
          mutate(group_f = as_factor(group)))
Warning: data coerced from tibble to data frame
Bayes factor analysis
--------------
[1] Alt., r=0.707 : 0.3643372 ±0.02%

Against denominator:
  Null, mu1-mu2 = 0 
---
Bayes factor type: BFindepSample, JZS
Arbeitauftrag 🏋
  • Legt ein neues, leeres Rstudioprojekt an und speichert die Bürglerdaten dort.
  • Öffnet ein R-Skript oder Quartodokument in dem ihr die obigen Analyseschritte durchführt und falls Zeit bleibt auf weitere Variablen übertragt

4 Testung informativer Hypothesen zu Zeitpunkt vier

So weit ich das Bürgler et al. (2023) entnehmen kann, berechnet das Autorenteam eine ANOVA der Differenzen T1/T4 und testet die Omnibuspunktnullhypothese \(H_0\text{: }\mu(\text{Diff control}) = \mu(\text{Diff imaginary pill}) = \mu(\text{Diff open label placebo})\) gegen die theoretisch plausiblen Hypothesen \(H_1\text{: }\mu(\text{Diff control}) < \mu(\text{Diff imaginary pill}) < \mu(\text{Diff open label placebo})\) und \(H_2\text{: }\mu(\text{Diff control}) < \mu(\text{Diff imaginary pill}) = \mu(\text{Diff open label placebo})\) abzuwägen. Dies kann in JASP und R mithilfe des Paketes {bain} erfolgen. Die Syntax dazu sieht wie folgt aus:

# zunächst differenzen berechnen
data_buergler_primary <- 
  data_buergler_primary |> 
  mutate(diffPAF = PAF_t0 - PAF_t4)

library(bain)
infhyp <-
  bain(lm(diffPAF ~ group_f,
          data = data_buergler_primary),
       hypothesis = "group_fNT = group_fIP = group_fOLP; group_fNT < group_fIP = group_fOLP; group_fNT < group_fIP < group_fOLP;")

infhyp
Bayesian informative hypothesis testing for an object of class lm (ANOVA):

   Fit   Com   BF.u   BF.c   PMPa  PMPb  PMPc 
H1 0.000 0.001 0.025  0.025  0.001 0.001 0.001
H2 0.217 0.013 17.335 17.335 0.819 0.782 0.803
H3 0.640 0.168 3.804  8.794  0.180 0.172 0.176
Hu                                 0.045      
Hc 0.360 0.832 0.433                     0.020

Hypotheses:
  H1: group_fNT=group_fIP=group_fOLP
  H2: group_fNT<group_fIP=group_fOLP
  H3: group_fNT<group_fIP<group_fOLP

Note: BF.u denotes the Bayes factor of the hypothesis at hand versus the unconstrained hypothesis Hu. BF.c denotes the Bayes factor of the hypothesis at hand versus its complement. PMPa contains the posterior model probabilities of the hypotheses specified. PMPb adds Hu, the unconstrained hypothesis. PMPc adds Hc, the complement of the union of the hypotheses specified.
infhyp$BFmatrix
         H1          H2          H3
H1   1.0000 0.001436182 0.006543825
H2 696.2908 1.000000000 4.556405167
H3 152.8158 0.219471264 1.000000000

5 Literatur

Buergler, S., Sezer, D., Bagge, N., Kirsch, I., Locher, C., Carvalho, C., & Gaab, J. (2023). Imaginary pills and open-label placebos can reduce test anxiety by means of placebo mechanisms | scientific reports. Scientific Reports, 13(1), 2624.